# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Compute.V1.Model.RouterStatus do
  @moduledoc """


  ## Attributes

  *   `bestRoutes` (*type:* `list(GoogleApi.Compute.V1.Model.Route.t)`, *default:* `nil`) - A list of the best dynamic routes for this Cloud Router's Virtual Private Cloud (VPC) network in the same region as this Cloud Router. Lists all of the best routes per prefix that are programmed into this region's VPC data plane. When global dynamic routing mode is turned on in the VPC network, this list can include cross-region dynamic routes from Cloud Routers in other regions.
  *   `bestRoutesForRouter` (*type:* `list(GoogleApi.Compute.V1.Model.Route.t)`, *default:* `nil`) - A list of the best BGP routes learned by this Cloud Router. It is possible that routes listed might not be programmed into the data plane, if the Google Cloud control plane finds a more optimal route for a prefix than a route learned by this Cloud Router.
  *   `bgpPeerStatus` (*type:* `list(GoogleApi.Compute.V1.Model.RouterStatusBgpPeerStatus.t)`, *default:* `nil`) - 
  *   `natStatus` (*type:* `list(GoogleApi.Compute.V1.Model.RouterStatusNatStatus.t)`, *default:* `nil`) - 
  *   `network` (*type:* `String.t`, *default:* `nil`) - URI of the network to which this router belongs.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :bestRoutes => list(GoogleApi.Compute.V1.Model.Route.t()) | nil,
          :bestRoutesForRouter => list(GoogleApi.Compute.V1.Model.Route.t()) | nil,
          :bgpPeerStatus => list(GoogleApi.Compute.V1.Model.RouterStatusBgpPeerStatus.t()) | nil,
          :natStatus => list(GoogleApi.Compute.V1.Model.RouterStatusNatStatus.t()) | nil,
          :network => String.t() | nil
        }

  field(:bestRoutes, as: GoogleApi.Compute.V1.Model.Route, type: :list)
  field(:bestRoutesForRouter, as: GoogleApi.Compute.V1.Model.Route, type: :list)
  field(:bgpPeerStatus, as: GoogleApi.Compute.V1.Model.RouterStatusBgpPeerStatus, type: :list)
  field(:natStatus, as: GoogleApi.Compute.V1.Model.RouterStatusNatStatus, type: :list)
  field(:network)
end

defimpl Poison.Decoder, for: GoogleApi.Compute.V1.Model.RouterStatus do
  def decode(value, options) do
    GoogleApi.Compute.V1.Model.RouterStatus.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Compute.V1.Model.RouterStatus do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
